🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / settings / src / commonMain / kotlin / org / meshtastic / feature / settings / SettingsViewModel.kt
Displaying Raw • Download
feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/SettingsViewModel.kt 97ec245a70ef792e54a9e21a2d79c4832ced1d25 (97ec245a) Text, 9.65 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.settings
Tff7b72import T7ee787androidx.lifecycle.ViewModel
Tff7b72import T7ee787kotlinx.coroutines.flow.MutableStateFlow
Tff7b72import T7ee787kotlinx.coroutines.flow.StateFlow
Tff7b72import T7ee787kotlinx.coroutines.flow.asStateFlow
Tff7b72import T7ee787kotlinx.coroutines.flow.flatMapLatest
Tff7b72import T7ee787kotlinx.coroutines.flow.flowOf
Tff7b72import T7ee787kotlinx.coroutines.flow.map
Tff7b72import T7ee787kotlinx.coroutines.flow.update
Tff7b72import T7ee787okio.BufferedSink
Tff7b72import T7ee787org.koin.core.annotation.KoinViewModel
Tff7b72import T7ee787org.meshtastic.core.common.BuildConfigProvider
Tff7b72import T7ee787org.meshtastic.core.common.database.DatabaseManager
Tff7b72import T7ee787org.meshtastic.core.common.util.CommonUri
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.ExportDataUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.IsOtaCapableUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.MeshLocationUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetAppIntroCompletedUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetDatabaseCacheLimitUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetLocaleUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetMeshLogSettingsUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetNotificationSettingsUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetProvideLocationUseCase
Tff7b72import T7ee787org.meshtastic.core.domain.usecase.settings.SetThemeUseCase
Tff7b72import T7ee787org.meshtastic.core.model.ConnectionState
Tff7b72import T7ee787org.meshtastic.core.model.MyNodeInfo
Tff7b72import T7ee787org.meshtastic.core.model.Node
Tff7b72import T7ee787org.meshtastic.core.model.RadioController
Tff7b72import T7ee787org.meshtastic.core.repository.FileService
Tff7b72import T7ee787org.meshtastic.core.repository.MeshLogPrefs
Tff7b72import T7ee787org.meshtastic.core.repository.NodeRepository
Tff7b72import T7ee787org.meshtastic.core.repository.NotificationPrefs
Tff7b72import T7ee787org.meshtastic.core.repository.RadioConfigRepository
Tff7b72import T7ee787org.meshtastic.core.repository.UiPrefs
Tff7b72import T7ee787org.meshtastic.core.ui.viewmodel.safeLaunch
Tff7b72import T7ee787org.meshtastic.core.ui.viewmodel.stateInWhileSubscribed
Tff7b72import T7ee787org.meshtastic.proto.LocalConfig
Tf0883e@KoinViewModel
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffLongParameterListTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffTooManyFunctionsTa5d6ff"Tb4b4b4)
Tff7b72class T56d364SettingsViewModelTb4b4b4(
Te6edf3radioConfigRepositoryTb4b4b4: Te6edf3RadioConfigRepositoryTb4b4b4,
Tff7b72private Tff7b72val Te6edf3radioControllerTb4b4b4: Te6edf3RadioControllerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3nodeRepositoryTb4b4b4: Te6edf3NodeRepositoryTb4b4b4,
Tff7b72private Tff7b72val Te6edf3uiPrefsTb4b4b4: Te6edf3UiPrefsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3buildConfigProviderTb4b4b4: Te6edf3BuildConfigProviderTb4b4b4,
Tff7b72private Tff7b72val Te6edf3databaseManagerTb4b4b4: Te6edf3DatabaseManagerTb4b4b4,
Tff7b72private Tff7b72val Te6edf3meshLogPrefsTb4b4b4: Te6edf3MeshLogPrefsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3notificationPrefsTb4b4b4: Te6edf3NotificationPrefsTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setThemeUseCaseTb4b4b4: Te6edf3SetThemeUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setLocaleUseCaseTb4b4b4: Te6edf3SetLocaleUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setAppIntroCompletedUseCaseTb4b4b4: Te6edf3SetAppIntroCompletedUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setProvideLocationUseCaseTb4b4b4: Te6edf3SetProvideLocationUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setDatabaseCacheLimitUseCaseTb4b4b4: Te6edf3SetDatabaseCacheLimitUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setMeshLogSettingsUseCaseTb4b4b4: Te6edf3SetMeshLogSettingsUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3setNotificationSettingsUseCaseTb4b4b4: Te6edf3SetNotificationSettingsUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3meshLocationUseCaseTb4b4b4: Te6edf3MeshLocationUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3exportDataUseCaseTb4b4b4: Te6edf3ExportDataUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3isOtaCapableUseCaseTb4b4b4: Te6edf3IsOtaCapableUseCaseTb4b4b4,
Tff7b72private Tff7b72val Te6edf3fileServiceTb4b4b4: Te6edf3FileServiceTb4b4b4,
Tb4b4b4) Tb4b4b4: Te6edf3ViewModelTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3myNodeInfoTb4b4b4: Te6edf3StateFlowTff7b72<Te6edf3MyNodeInfo?Tff7b72> Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3myNodeInfo
Tff7b72val Te6edf3myNodeNum
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3myNodeInfoTb4b4b4.Te6edf3valueTff7b72?.Te6edf3myNodeNum
Tff7b72val Te6edf3ourNodeInfoTb4b4b4: Te6edf3StateFlowTff7b72<Te6edf3Node?Tff7b72> Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3ourNodeInfo
Tff7b72val Te6edf3isConnected Tff7b72=
Te6edf3radioControllerTb4b4b4.Te6edf3connectionState
Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657it Tff7b72is Te6edf3ConnectionStateTb4b4b4.Te6edf3Connected Tb4b4b4}
Tb4b4b4.Te6edf3stateInWhileSubscribedTb4b4b4(Te6edf3initialValue Tff7b72= Tff7b72falseTb4b4b4)
Tff7b72val Te6edf3localConfigTb4b4b4: Te6edf3StateFlowTff7b72<Te6edf3LocalConfigTff7b72> Tff7b72=
Te6edf3radioConfigRepositoryTb4b4b4.Te6edf3localConfigFlowTb4b4b4.Te6edf3stateInWhileSubscribedTb4b4b4(Te6edf3initialValue Tff7b72= Te6edf3LocalConfigTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3provideLocationTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657BooleanTff7b72> Tff7b72=
Te6edf3myNodeInfo
Tb4b4b4.Te6edf3flatMapLatest Tb4b4b4{ Te6edf3myNodeEntity Tff7b72-Tff7b72>
T8b949e// When myNodeInfo changes, set up emissions for the "provide-location-nodeNum" pref.
Tff7b72if Tb4b4b4(Te6edf3myNodeEntity Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3flowOfTb4b4b4(Tff7b72falseTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3uiPrefsTb4b4b4.Te6edf3shouldProvideNodeLocationTb4b4b4(Te6edf3myNodeEntityTb4b4b4.Te6edf3myNodeNumTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4.Te6edf3stateInWhileSubscribedTb4b4b4(Te6edf3initialValue Tff7b72= Tff7b72falseTb4b4b4)
Tff7b72fun Td2a8ffstartProvidingLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3meshLocationUseCaseTb4b4b4.Te6edf3startProvidingLocationTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72fun Td2a8ffstopProvidingLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3meshLocationUseCaseTb4b4b4.Te6edf3stopProvidingLocationTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72val Te6edf3_excludedModulesUnlocked Tff7b72= Te6edf3MutableStateFlowTb4b4b4(Tff7b72falseTb4b4b4)
Tff7b72val Te6edf3excludedModulesUnlockedTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657BooleanTff7b72> Tff7b72= Te6edf3_excludedModulesUnlockedTb4b4b4.Te6edf3asStateFlowTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3appVersionName
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3buildConfigProviderTb4b4b4.Te6edf3versionName
Tff7b72val Te6edf3isOtaCapableTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657BooleanTff7b72> Tff7b72= Te6edf3isOtaCapableUseCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3stateInWhileSubscribedTb4b4b4(Te6edf3initialValue Tff7b72= Tff7b72falseTb4b4b4)
T8b949e// Device DB cache limit (bounded by DatabaseConstants)
Tff7b72val Te6edf3dbCacheLimitTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657IntTff7b72> Tff7b72= Te6edf3databaseManagerTb4b4b4.Te6edf3cacheLimit
Tff7b72fun Td2a8ffsetDbCacheLimitTb4b4b4(Te6edf3limitTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3setDatabaseCacheLimitUseCaseTb4b4b4(Te6edf3limitTb4b4b4)
Tb4b4b4}
T8b949e// Notifications
Tff7b72val Te6edf3messagesEnabled Tff7b72= Te6edf3notificationPrefsTb4b4b4.Te6edf3messagesEnabled
Tff7b72val Te6edf3nodeEventsEnabled Tff7b72= Te6edf3notificationPrefsTb4b4b4.Te6edf3nodeEventsEnabled
Tff7b72val Te6edf3lowBatteryEnabled Tff7b72= Te6edf3notificationPrefsTb4b4b4.Te6edf3lowBatteryEnabled
Tff7b72fun Td2a8ffsetMessagesEnabledTb4b4b4(Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3setNotificationSettingsUseCaseTb4b4b4.Te6edf3setMessagesEnabledTb4b4b4(Te6edf3enabledTb4b4b4)
Tff7b72fun Td2a8ffsetNodeEventsEnabledTb4b4b4(Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3setNotificationSettingsUseCaseTb4b4b4.Te6edf3setNodeEventsEnabledTb4b4b4(Te6edf3enabledTb4b4b4)
Tff7b72fun Td2a8ffsetLowBatteryEnabledTb4b4b4(Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3setNotificationSettingsUseCaseTb4b4b4.Te6edf3setLowBatteryEnabledTb4b4b4(Te6edf3enabledTb4b4b4)
T8b949e// MeshLog retention period (bounded by MeshLogPrefsImpl constants)
Tff7b72private Tff7b72val Te6edf3_meshLogRetentionDays Tff7b72= Te6edf3MutableStateFlowTb4b4b4(Te6edf3meshLogPrefsTb4b4b4.Te6edf3retentionDaysTb4b4b4.Te6edf3valueTb4b4b4)
Tff7b72val Te6edf3meshLogRetentionDaysTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657IntTff7b72> Tff7b72= Te6edf3_meshLogRetentionDaysTb4b4b4.Te6edf3asStateFlowTb4b4b4(Tb4b4b4)
Tff7b72private Tff7b72val Te6edf3_meshLogLoggingEnabled Tff7b72= Te6edf3MutableStateFlowTb4b4b4(Te6edf3meshLogPrefsTb4b4b4.Te6edf3loggingEnabledTb4b4b4.Te6edf3valueTb4b4b4)
Tff7b72val Te6edf3meshLogLoggingEnabledTb4b4b4: Te6edf3StateFlowTff7b72<Tffa657BooleanTff7b72> Tff7b72= Te6edf3_meshLogLoggingEnabledTb4b4b4.Te6edf3asStateFlowTb4b4b4(Tb4b4b4)
Tff7b72fun Td2a8ffsetMeshLogRetentionDaysTb4b4b4(Te6edf3daysTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3safeLaunchTb4b4b4(Te6edf3tag Tff7b72= Ta5d6ff"Ta5d6ffsetMeshLogRetentionDaysTa5d6ff"Tb4b4b4) Tb4b4b4{ Te6edf3setMeshLogSettingsUseCaseTb4b4b4.Te6edf3setRetentionDaysTb4b4b4(Te6edf3daysTb4b4b4) Tb4b4b4}
Te6edf3_meshLogRetentionDaysTb4b4b4.Te6edf3value Tff7b72= Te6edf3daysTb4b4b4.Te6edf3coerceInTb4b4b4(Te6edf3MeshLogPrefsTb4b4b4.Te6edf3MIN_RETENTION_DAYSTb4b4b4, Te6edf3MeshLogPrefsTb4b4b4.Te6edf3MAX_RETENTION_DAYSTb4b4b4)
Tb4b4b4}
Tff7b72fun Td2a8ffsetMeshLogLoggingEnabledTb4b4b4(Te6edf3enabledTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Te6edf3safeLaunchTb4b4b4(Te6edf3tag Tff7b72= Ta5d6ff"Ta5d6ffsetMeshLogLoggingEnabledTa5d6ff"Tb4b4b4) Tb4b4b4{ Te6edf3setMeshLogSettingsUseCaseTb4b4b4.Te6edf3setLoggingEnabledTb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4}
Te6edf3_meshLogLoggingEnabledTb4b4b4.Te6edf3value Tff7b72= Te6edf3enabled
Tb4b4b4}
Tff7b72fun Td2a8ffsetProvideLocationTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Te6edf3myNodeNumTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3setProvideLocationUseCaseTb4b4b4(Tffa657itTb4b4b4, Te6edf3valueTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72fun Td2a8ffsetThemeTb4b4b4(Te6edf3themeTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3setThemeUseCaseTb4b4b4(Te6edf3themeTb4b4b4)
Tb4b4b4}
T8b949e/** Set the application locale. Empty string means system default. */
Tff7b72fun Td2a8ffsetLocaleTb4b4b4(Te6edf3languageTagTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3setLocaleUseCaseTb4b4b4(Te6edf3languageTagTb4b4b4)
Tb4b4b4}
Tff7b72fun Td2a8ffshowAppIntroTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3setAppIntroCompletedUseCaseTb4b4b4(Tff7b72falseTb4b4b4)
Tb4b4b4}
Tff7b72fun Td2a8ffunlockExcludedModulesTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3_excludedModulesUnlockedTb4b4b4.Te6edf3update Tb4b4b4{ Tff7b72true Tb4b4b4}
Tb4b4b4}
T8b949e/**
* Export all persisted packet data to a CSV file at the given URI.
*
* @param uri The destination URI for the CSV file.
* @param filterPortnum If provided, only packets with this port number will be exported.
*/
Tff7b72fun Td2a8ffsaveDataCsvTb4b4b4(Te6edf3uriTb4b4b4: Te6edf3CommonUriTb4b4b4, Te6edf3filterPortnumTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3safeLaunchTb4b4b4(Te6edf3tag Tff7b72= Ta5d6ff"Ta5d6ffsaveDataCsvTa5d6ff"Tb4b4b4) Tb4b4b4{
Te6edf3fileServiceTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{ Te6edf3writer Tff7b72-Tff7b72> Te6edf3performDataExportTb4b4b4(Te6edf3writerTb4b4b4, Te6edf3filterPortnumTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72suspend Tff7b72fun Td2a8ffperformDataExportTb4b4b4(Te6edf3writerTb4b4b4: Te6edf3BufferedSinkTb4b4b4, Te6edf3filterPortnumTb4b4b4: Tffa657Int?Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3myNodeNum Tff7b72= Te6edf3myNodeNum Tff7b72?: Tff7b72return
Te6edf3exportDataUseCaseTb4b4b4(Te6edf3writerTb4b4b4, Te6edf3myNodeNumTb4b4b4, Te6edf3filterPortnumTb4b4b4)
Tb4b4b4}
T8b949e// Node list layout preferences
Tff7b72val Te6edf3nodeListDensity Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3nodeListDensity
Tff7b72val Te6edf3shouldShowPower Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowPower
Tff7b72val Te6edf3shouldShowLastHeard Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowLastHeard
Tff7b72val Te6edf3lastHeardIsRelative Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3lastHeardIsRelative
Tff7b72val Te6edf3shouldShowLocation Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowLocation
Tff7b72val Te6edf3shouldShowHops Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowHops
Tff7b72val Te6edf3shouldShowSignal Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowSignal
Tff7b72val Te6edf3shouldShowChannel Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowChannel
Tff7b72val Te6edf3shouldShowRole Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowRole
Tff7b72val Te6edf3shouldShowTelemetry Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3shouldShowTelemetry
Tff7b72fun Td2a8ffsetNodeListDensityTb4b4b4(Te6edf3valueTb4b4b4: Tffa657StringTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setNodeListDensityTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowPowerTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowPowerTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowLastHeardTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowLastHeardTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetLastHeardIsRelativeTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setLastHeardIsRelativeTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowLocationTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowLocationTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowHopsTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowHopsTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowSignalTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowSignalTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowChannelTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowChannelTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowRoleTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowRoleTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72fun Td2a8ffsetShouldShowTelemetryTb4b4b4(Te6edf3valueTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72= Te6edf3uiPrefsTb4b4b4.Te6edf3setShouldShowTelemetryTb4b4b4(Te6edf3valueTb4b4b4)
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.07s